//
//  HMMainViewController.swift
//  大深圳微博01
//
//  Created by shenzhenIOS on 16/4/8.
//  Copyright © 2016年 shenzhenIOS. All rights reserved.
//

/*
    历史遗留问题
*/

/*
    1.定义闭包(准备一段代码)
    2.传递
    3.调用
    注意:顺序无所谓
*/

import UIKit

import SVProgressHUD

class HMMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // get only 只读属性,不能直接使用=号赋值, 使用KVC
//        tabBar = HMMainTabBar()
        let mainTabBar = HMMainTabBar()
        
        // 闭包使用流程3.定义闭包并设置
        // 闭包调用流程1.定义闭包, 2.传递闭包
        mainTabBar.composeClosure = { () -> Void in
            // 闭包调用流程4.执行闭包里面的代码
            if !HMUserAccountViewModel.sharedInstance.userLogin {
                SVProgressHUD.showErrorWithStatus("请先登录...")
                return
            }
            
            // 创建转撰写微博界面
            let composeVC = HMComposeViewController()
            
            let nav = UINavigationController(rootViewController: composeVC)
            
            self.presentViewController(nav, animated: true, completion: nil)
        }
        
        // KVC赋值规则,1.找setTabBar()方法,能找到就直接调用这个方法, 2._tabBar成员变量, 3._setTabBar()方法, 4.找tabBar成员变量,
        self.setValue(mainTabBar, forKey: "tabBar")
        
        // 设置tabbar的tintColor,当图片和文字颜色不一样时就没辙了
//        tabBar.tintColor = UIColor.orangeColor()

        setupChildViewControllers()
    }
    
    private func setupChildViewControllers() {
        let homeVC = HMHomeTableViewController()
        // 首页
        setupChildViewController(homeVC, imageName: "tabbar_home", title: "首页")
        
        // 消息
        let messageVC = HMMessageTableViewController()
        setupChildViewController(messageVC, imageName: "tabbar_message_center", title: "消息")
        
        // 发现
        let discoverVC = HMDiscoverTableViewController()
        setupChildViewController(discoverVC, imageName: "tabbar_discover", title: "发现")
        
        // 我
        let profileVC = HMProfileTableViewController()
        setupChildViewController(profileVC, imageName: "tabbar_profile", title: "我")
    }
    
    /// 设置子控制器
    ///
    /// - parameter controller: 控制器
    /// - parameter imageName:  图片名称
    /// - parameter title:      标题
    private func setupChildViewController(controller: UIViewController, imageName: String, title: String) {

        // 设置tabbar的普通图片
        controller.tabBarItem.image = UIImage(named: imageName)
        
        // 设置tabbar的选中图片,拼接高亮图片名称
        controller.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        
        // 设置标题
        controller.title = title
        
        // 设置标题颜色
        controller.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: UIControlState.Selected)
        
        // 包装一个导航控制器,并添加到tabBarVC里面
        let nav = UINavigationController(rootViewController: controller)
        addChildViewController(nav)
    }

}
